/*
 * @Descripttion:
 * @version:
 * @Author: lfzxs@qq.com
 * @Date: 2023-08-22 11:42:54
 * @LastEditors: lfzxs@qq.com
 * @LastEditTime: 2023-08-24 10:25:01
 */
package services

import (
	"fmt"
	"io"
)


type Pair struct {
	Key   string
	Value interface{}
}

func (p Pair) String() string {
	return fmt.Sprintf("%s: %v", p.Key, p.Value)
}

// 上传接口
type IUpLoad interface {

	GetName()string

	/**
	* FileHash
	* @Description: 获取文件hash值
	* @param filedata 文件流
	* @return hash 文件hash值
	* @return err 异常(文件流异常)
	*/
	FileHash(filedata io.Reader)(hash string,err error)

	/**
	* FileHash
	* @Description: 获取文件hash值
	* @param filedata 文件流
	* @return hash 文件hash值
	* @return err 异常(文件流异常)
	*/
	GetFileKeyFormHash(hash string)(fileKey string,err error)

	/**
	* SaveFile
	* @Description: 保存文件
	* @param filedata 文件流
	* @param size 文件大小,单位字节
	* @param path 保存路径
	* @param pairs 其他属性
	* @return fileUrl 文件访问路径
	* @return objectKey 文件对象ID
	* @return err 异常
	*/
	SaveFile(filedata io.Reader, size int64,path string,pairs ...Pair) (fileUrl string,fileKey string,err error)

	/**
	* LinkFile
	* @Description: 创建链接文件
	* @param path 逻辑路径
	* @param fileKey 文件对象ID
	* @return objectKey 链接文件对象ID
	* @return err 异常(源文件不存在,新路径已存在)
	*/
	LinkFile(path string,fileKey string)(objectKey string,err error)
}

